const validation = require('../middleware/validation');
const contentTypeCheck = require('../middleware/content-type/content-type')

/**
 * 自动注册路由并添加校验中间件
 * @param {Router} router Koa 路由实例
 * @param {Object} controller 控制器实例
 * @param {string} method HTTP 方法 (如 'get', 'post')
 * @param {string} path 路径
 * @param {string} methodName 控制器方法名
 * @param {string} jsonType 需要的参数类型 
 */
function registerRoute(router, controller, method, path, methodName, jsonType) {
  // 获取校验中间件（如果有定义校验规则）
  const validationMiddleware = validation.createValidationMiddleware(controller, methodName);
  const contentType = jsonType === 'json' ? contentTypeCheck.checkJsonContentType : contentTypeCheck.checkUrlencodedContentType
  // 注册路由，自动添加校验中间件
  router[method](path, contentType, validationMiddleware, controller[methodName].bind(controller));
}

module.exports = {
  registerRoute,
};
